मैं पिछले कुछ वर्षों से एक साइड-प्रोजेक्ट के रूप में Boot.dev का निर्माण कर रहा हूं, और हाल ही में कई नए छात्रों ने एक ही प्रश्न पूछा है:
"आपके कंप्यूटर विज्ञान पाठ्यक्रम के लिए मुझे एक से अधिक प्रोग्रामिंग भाषा सीखने की आवश्यकता क्यों है?"
ऐसा लगता है कि बड़ी संख्या में छात्र इस विचार के साथ मंच से जुड़ते हैं कि वे "अपने प्रयासों को विभाजित करने" के बजाय "एक ही भाषा में पूरी तरह से महारत हासिल करेंगे"। जबकि मैं इसे आगे बढ़ते हुए ऐप में बेहतर तरीके से समझाने की योजना बना रहा हूं, मैं इस ब्लॉग पोस्ट को इस बारे में गहन विवरण प्रदान करने के लिए लिखना चाहता था कि हमने अपने सीएस कार्यक्रम के दौरान आपने कई भाषाएं क्यों सीखीं।
ताकि आप समझ सकें कि मैं कहाँ से आ रहा हूँ, मैं समझाता हूँ कि Boot.dev क्या है, और एक शैक्षिक मंच के रूप में इसके लक्ष्य क्या हैं।
Boot.dev ब्राउज़र में एक बैटरी-शामिल कंप्यूटर विज्ञान पाठ्यक्रम है। कोड सीखने के सर्वोत्तम तरीके के बारे में हमारी कुछ मजबूत राय है। उदाहरण के लिए:
यदि आप जीथब पर अपने सार्वजनिक रोडमैप में हमारे द्वारा नियोजित पूर्ण सीएस पाठ्यक्रम को देखते हैं, तो आप देखेंगे कि यह मूल रूप से असंभव है। कुछ अवधारणाएँ हैं जो विशिष्ट तकनीकों के साथ इतनी कसकर जुड़ी हुई हैं कि उन सभी को एक ही तरह से सिखाने की कोशिश करने का कोई मतलब नहीं है। आइए कुछ तुच्छ उदाहरण देखें।
संक्षेप में, हमारे पास 2 प्रतिस्पर्धी लक्ष्य हैं:
विश्वविद्यालय में अपनी पारंपरिक सीएस डिग्री के दौरान, मैंने 12+ प्रोग्रामिंग भाषाओं का उपयोग किया। मुझे लगता है कि यह बहुत ज्यादा है। मैं उन्हें सिखाने के लिए भाषाएँ नहीं पढ़ाना चाहता। यह वास्तव में एक अनुकूलन समस्या है जहां हम जितनी संभव हो उतनी कम भाषाओं को पेश करना चाहते हैं, जबकि हम हर उस अवधारणा को प्रभावी ढंग से पढ़ाना चाहते हैं जिसे हम पढ़ाना चाहते हैं। मुझे विश्वास है कि Boot.dev के पूर्ण पाठ्यक्रम के लिए कुल मिलाकर केवल लगभग 6 भाषाओं के उपयोग की आवश्यकता होगी, और यह कि अधिकांश कार्यक्रम केवल JavaScript, Python, और Go का उपयोग कर सकते हैं।
कुछ अलग प्रोग्रामिंग भाषाओं को सीखने का एक अतिरिक्त लाभ है जिनके बारे में हमने अभी तक बात नहीं की है। आपको विभिन्न भाषाओं से परिचित कराने से, आपको प्रोग्रामिंग के विभिन्न तरीकों के बीच कुछ लाभ, कमियां, समानताएं और अंतर दिखाई देने लगेंगे।
यदि आप केवल एक प्रोग्रामिंग भाषा लिखते हैं, तो यह मान लेना आसान है कि चीजों को करने का एक निश्चित तरीका "सर्वश्रेष्ठ तरीका", "सही तरीका" या शायद "एकमात्र तरीका" भी है।
उदाहरण के लिए, जावास्क्रिप्ट और गो में त्रुटि प्रवाह के लिए बेतहाशा भिन्न दृष्टिकोण हैं:
// JavaScript try { doSomethingDangerous() } catch (err){ console.log(err) } // Go err := doSomethingDangerous() if err != nil { fmt.Println(err) }
आपको कई भाषाओं से परिचित कराने से, मेरा दृढ़ विश्वास है कि आपको प्रत्येक तकनीक की गहरी समझ होगी, और जब आप विभिन्न उपकरणों का उपयोग करना चाहेंगे।
व्यक्तिगत रूप से, मुझे ऐसा नहीं लगता। मैं वास्तव में सोचता हूं कि यदि आप अपनी सीखने की यात्रा की शुरुआत से लेकर अपनी पहली कोडिंग नौकरी तक केवल एक प्रोग्रामिंग भाषा पर ध्यान केंद्रित करते हैं, तो आप वास्तव में बदतर स्थिति में होंगे यदि आपने अपने क्षितिज को व्यापक बनाने में कुछ समय बिताया है।
कुछ लोग मानते हैं कि "कोड सीखना" "प्रोग्रामिंग भाषा सीखना" है। उन्हें लगता है कि यदि आप पायथन सीखते हैं, और फिर जावास्क्रिप्ट सीखना चाहते हैं, तो आप 0 से शुरू करेंगे।
यह सच्चाई से आगे नहीं हो सकता।
आपकी दूसरी प्रोग्रामिंग भाषा सीखने में आपके पहले सीखने में लगने वाले समय का 1/5 भाग लगेगा, क्योंकि आपके द्वारा सीखी गई लगभग 80% अवधारणाएं दोनों भाषाओं पर लागू होंगी। एक बार जब आप 3 या 4 अलग-अलग कोडिंग भाषाओं का उपयोग कर लेते हैं, तो आप लगभग किसी भी भाषा में कोड देख सकते हैं और समझ सकते हैं कि यह क्या कहता है। हो सकता है कि आपको कभी-कभी सिंटैक्स देखने की आवश्यकता पड़े, लेकिन हर कोई वैसे भी ऐसा करता है ।
यदि आपने पाठ्यक्रम ब्राउज़ किया है, तो आपने देखा होगा कि हमने अधिकांश सामग्री को पढ़ाने के लिए 3 भाषाओं पर समझौता किया है:
हम जितना संभव हो सके इन 3 भाषाओं का उपयोग करने का प्रयास करने जा रहे हैं, केवल विषय वस्तु के लिए आवश्यक अन्य तकनीकों में मिश्रण करना। उदाहरण के लिए, जब हम रिलेशनल डेटाबेस के बारे में बात कर रहे हों तो SQL का उपयोग करना।
आइए मैं समझाता हूं कि हमने इन तीनों को विशेष रूप से क्यों चुना।
आप वास्तव में इन दिनों जावास्क्रिप्ट से दूर नहीं हो सकते। बैकएंड प्रोग्रामिंग के बारे में सीखना कठिन है (जिसमें हमारे अधिकांश छात्र रुचि रखते हैं) बिना यह समझे कि बैकएंड क्यों मौजूद है। बैकएंड केवल फ्रंट-एंड को पावर देने के लिए मौजूद है, इसलिए यह समझ में आता है कि हमें आपको पहले कुछ फ्रंट-एंड बेसिक्स सिखाने की आवश्यकता होगी। यदि आप वेब पर फ्रंट-एंड बनाने जा रहे हैं, तो यह लगभग निश्चित रूप से जावास्क्रिप्ट का उपयोग करेगा, इसलिए हमारा हाथ इस पर मजबूर है।
वाक्य रचनात्मक रूप से बोलते हुए पाइथन आपके रास्ते से हट जाता है। एल्गोरिथम और डेटा संरचनाएं ऐसी अवधारणाएं हैं जिन पर छात्रों को अक्सर महारत हासिल करना अधिक कठिन लगता है, इसलिए हमारे लिए ऐसी भाषा चुनना समझ में आया जो हमारे छात्रों को तर्क पर यथासंभव ध्यान केंद्रित करने की अनुमति दे। पायथन भी कई तरह से अंग्रेजी की तरह पढ़ता है, जिससे फिर से यह देखना आसान हो जाता है कि पायथन में एक एल्गोरिथ्म एक नज़र में क्या कर रहा है। इसके अतिरिक्त, हमारे पास पाठ्यक्रम के अंत में एआई और एमएल सामग्री है, इसलिए यह दो-पर-पत्थर की स्थिति है जहां हम अपने छात्रों को एक अतिरिक्त भाषा सीखने की आवश्यकता के बिना उस बिंदु पर पायथन पर फिर से जा सकते हैं।
हमारी सीएस डिग्री में बैकएंड प्रोग्रामिंग पर जोर दिया गया है, और मुझे व्यक्तिगत रूप से बैकएंड भाषा के रूप में गो के साथ जबरदस्त सफलता मिली है। गो कुछ अन्य विकल्पों की तुलना में संगामिति, संकलक और वितरित सिस्टम जैसी चीजों को पढ़ाना आसान बना देगा। मुझे लगता है कि हमारे पास अंततः एक जंग कोर्स हो सकता है जो मैन्युअल मेमोरी प्रबंधन के मामले में और भी निचले स्तर तक जाता है, लेकिन मैंने अभी तक उस पर फैसला नहीं किया है।
सीधे मुझ तक पहुंचने का सबसे अच्छा तरीका है Boot.dev Discord सर्वर से जुड़ना। आप मुझे ट्विटर पर @@ भी कर सकते हैं। मुझे बताएं कि आप हमारे दृष्टिकोण के बारे में क्या सोचते हैं!
यहां भी प्रकाशित https://blog.boot.dev/education/learn-multiple-programming-languages/